﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Csharp类的继承
{

    //坐标
    struct Vector2 
    {
      public int x;
      public int y;

        //构造函数
        public Vector2(int x,int y) 
        {
            this.x = x;
            this.y = y;
        }

    }
    //书写一个GameQbject类，有这些的属性:位置、大小，颜色
    //有这样的方法图形绘制(Draw)图形擦除(Remove）和移动(Move)的方法
    class GameObject
    {



        public string icon;//图标
        public Vector2 pos;//位置
        public Vector2 size;//大小
        public ConsoleColor color;//c#定义好的枚举


        //构造函数
        public GameObject(string icon,Vector2 pos,Vector2 size,ConsoleColor color) 
        {
            this.icon=icon;//图标
            this.pos=pos;//位置
            this.size=size;//大小
            this.color=color;
        }


        //构造2
        public GameObject(string icon, int x,int y, int width, int height, ConsoleColor color) 
            : this(icon, new Vector2(x, y), new Vector2(width, height), color) { }
       //{
       //    this.icon = icon;//图标

       //    this.pos.x = x;//位置
       //    this.pos.y = y;//位置


       //    this.size.x = width;//大小
       //    this.size.y = height;



       //    this.color = color;
       //}








        //方法一 ----》绘制
        public void Draw()
        {
            Console.ForegroundColor = color;//前景色默认为白色

            for (int i = 0; i < size.x; i++)//每一行
            {
                for (int j = 0; j < size.y; j++)//每一列
                {
                    Console.SetCursorPosition((pos.x+i)*2,pos.y+j);//移动光标----沿着i或者j方向偏移
                    Console.Write(icon);
                    
                }
            }

            //修改了颜色后，要改回来，这样对其他东西的打印才不会有
            Console.ForegroundColor = ConsoleColor.Gray;

        }

        //移除方法
        public void remove() 
        {
            for (int i = 0; i < size.x; i++)//每一行
            {
                for (int j = 0; j < size.y; j++)//每一列
                {
                    Console.SetCursorPosition((pos.x + i) * 2, pos.y + j);//移动光标----沿着i或者j方向偏移
                    Console.Write(" ");//空格填充就消除了

                }
            }
            Console.ForegroundColor = ConsoleColor.Gray;
        }


        //移动

        public void Move(Vector2 direction) 
        {
            this.pos.x = this.pos.x + direction.x;
            this.pos.y = this.pos.y + direction.y;

            //x轴边界
            if (this.pos.x <= 0)
            {
                this.pos.x = 0;
            }
            else if (this.pos.x >= 39-size.x*2) 
            {
                this.pos.x = 39 - size.x * 2;//边界
            }



            //y轴边界
            if (this.pos.y <= 0)
            {
                this.pos.y = 0;
            }
            else if (this.pos.y >= 39 - size.y)
            {
                this.pos.y = 39 - size.y ;//边界
            }


        }

    }
}
